﻿#ifndef GRAPHICSVIEW_HPP
#define GRAPHICSVIEW_HPP
/*
    Copyright (c) 2009-10 Qtrac Ltd. All rights reserved.

    This program or module is free software: you can redistribute it
    and/or modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation, either version 3 of
    the License, or (at your option) any later version. It is provided
    for educational purposes and is distributed in the hope that it will
    be useful, but WITHOUT ANY WARRANTY; without even the implied
    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
    the GNU General Public License for more details.
*/

#include <QAction>
#include <QGraphicsView>
#include <QPointer>
#include <QWheelEvent>

class GraphicsView : public QGraphicsView {
    Q_OBJECT
public:
    explicit GraphicsView(QGraphicsScene* scene, QWidget* parent = nullptr, bool useOpenGL = false);

public Q_SLOTS:
    void zoomIn();
    void zoomOut();
    void zoomFitView();
    void zoomOriginal();

protected:
    void  wheelEvent(QWheelEvent* event) override;
    [[nodiscard]] QSize minimumSizeHint() const override;

private:
    void createActions();
    void createConnections();
    void createMenu();
    void scaleBy(double factor);

    QPointer<QAction> m_viewZoomInAction;
    QPointer<QAction> m_viewZoomOutAction;
    QPointer<QAction> m_viewZoomFitAction;
    QPointer<QAction> m_viewZoomOriginalAction;
};

#endif // GRAPHICSVIEW_HPP
